<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of CheckStorageModel
 *
 * @author 敏学
 */
class CheckStorageModel extends CheckStoragePublicModel{
    //put your code here
    /**
	 * 库存检查公共接口
	 *
	 * @param  参数 $params
	 * @param  方法名称，默认取模块名称，首字母转小写
	 */
	public function run($params,$module_name=null){
		$this->module_name = ucwords_first($this->_module);
                if($this->module_name=='reduce'){
                    $this->module_name=ucwords_first($params['_module']);
                }
		$this->params = $params;
		$this->setSpec();
//		throw_json($this->module_name);
		// 销售关联配货，退货新增时验证可销售库存，其它验证实际库存
		if (($this->_module=='SaleOrder') || ($this->_module=='ReturnSaleOrder' && $this->_action=='insert')){
			if (C('sale.relation_sale_follow_up')==1) {
				$this->tableName = 'saleStorage';
			}
			$this->reduce = true;
		}
		// 合并修改后的数据（页面传递）的同规格数据（以库存规格为标准合并）
		// 设置数据中的下标名称
		$detail_key = ($this->_module=='ReturnSaleOrder' && $this->_action=='insert') ? 'sale' : 'detail';
		$post_data = $this->postMerge($detail_key);
//		 检查是否指定出库
//		$this->checkFiFo(intval($this->params['id']),$post_data);
		// 获取修改前的数据（取DB数据）
		$db_data = $this->dbMerge();
		// 计算本次操作最终修改量
		$this->setCheckData($post_data,$db_data);
		// 验证库存数量是否足够
		$this->execCheckStorage();
	}
}

?>
